﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;
using System.Windows.Forms;

namespace Arthus
{
    class GrupaArtikla
    {
        MySqlConnection konekcija;
        MySqlCommand komanda = new MySqlCommand();
        MySqlDataReader datareader = null;
        MySqlDataAdapter adapter = null;
        DataTable dataTable = null;
        DataSet dataSet = null;

        GrupaArtikla grupaArtiklaObj = null;

        public String VratiOznakuGrupeArtiklaNaOsnovuID(int idGrupeArtikla) {
            String rezultat = "";
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT GRUARTOZN FROM GRUART WHERE GRUARTID="+idGrupeArtikla+";";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    rezultat = (String)datareader.GetValue(0);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        } //metoda koja vraca oznaku grupeartikla na osnovu id-a

        public void PopuniComboBoxOznakom(ComboBox combobox)
        {
            combobox.Items.Clear();
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT GRUARTOZN FROM GRUART;";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    combobox.Items.Add(dataTable.Rows[i][0]);
                }
                combobox.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Dispose();
                adapter.Dispose();
                konekcija.Close();
            }
        } //puni combobox oznakom

        public int VratiIdNaOsnovuOznake(String oznakaGrupeArtikla)
        {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT GRUARTID FROM GRUART WHERE GRUARTOZN='"+oznakaGrupeArtikla+"';";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    rezultat = (int)datareader.GetValue(0);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        } //vraca id tarife na osnovu oznake

        public void PopuniListBox(ListBox lb)
        {
            lb.Items.Clear();
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT GRUARTID, GRUARTOZN FROM GRUART;";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    lb.Items.Add(dataTable.Rows[i][0] + ". " + dataTable.Rows[i][1]);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Dispose();
                adapter.Dispose();
                konekcija.Close();
            }
        }

        public void PopuniKontroleNaOsnovuIdGrupeArtikala(int idGrupeArtikala, TextBox oznaka, TextBox naziv, TextBox naziv2, ListBox klasifikacija)
        {
            try
            {
                Artikli.Klasifikacija.KlasicikafijaArtikala klasifikacijaArtikalaObj=new Artikli.Klasifikacija.KlasicikafijaArtikala();
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT GRUARTOZN, GRUARTNA1, GRUARTNA2, GRUARTKLA FROM GRUART WHERE GRUARTID=" + idGrupeArtikala + ";";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    oznaka.Text = datareader.GetValue(0).ToString();
                    naziv.Text = datareader.GetValue(1).ToString();
                    naziv2.Text = datareader.GetValue(2).ToString();
                    klasifikacija.SelectedIndex=klasifikacija.Items.IndexOf(datareader.GetValue(3).ToString()+". "+
                        klasifikacijaArtikalaObj.VratiOznakuKlasifikacijeNaOsnovuID(Convert.ToInt32(datareader.GetValue(3).ToString())));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
        }

        public int VratiPovecanID()
        {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT MAX(GRUARTID) FROM GRUART;";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader.GetValue(0));
                rezultat++;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public void DodajGrupu(TextBox oznaka, TextBox naziv, TextBox naziv2, ListBox klasifikacija)
        {
            grupaArtiklaObj = new GrupaArtikla();
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = string.Format("INSERT INTO `gruart`(`gruartid`, gruartkla, `gruartozn`, `gruartozx`, `gruartna1`, `gruartna2`) VALUES ("
                    + grupaArtiklaObj.VratiPovecanID() + ", " + Convert.ToInt32(klasifikacija.SelectedItem.ToString().Split('.')[0]) + ",'" + oznaka.Text + "','" 
                    + Razno.IzbrisiPojedineKaraktereIzStringa(oznaka.Text.Trim().ToUpper()) + "','" + naziv.Text + "','" + naziv2.Text + "')");
                int response = komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno dodata nova grupa artikala!");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Već postoji grupa sa takvom oznakom!");
            }
            catch (FormatException ex)
            {
                MessageBox.Show("Greška u formatu unosa! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void IzmeniGrupu(int idGrupe, TextBox oznaka, TextBox naziv, TextBox naziv2, ListBox klasifikacija)
        {
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = @"UPDATE `gruart` SET `gruartozn`='" + oznaka.Text + "', gruartkla=" 
                    + Convert.ToInt32(klasifikacija.SelectedItem.ToString().Split('.')[0]) + ", `gruartozx`='" 
                    + Razno.IzbrisiPojedineKaraktereIzStringa(oznaka.Text.Trim().ToUpper()) + "',`gruartna1`='" + naziv.Text + "',`gruartna2`='" 
                    + naziv2.Text + "' WHERE gruartid="
                    + idGrupe + "";
                int response = komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno izmenjena grupa artikala!");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Već postoji grupa sa takvom oznakom!");
            }
            catch (FormatException ex)
            {
                MessageBox.Show("Greška u formatu unosa! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void ObrisiGrupu(int idGrupe)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "DELETE FROM `gruart` WHERE gruartid=" + idGrupe + ";";
                komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno obrisana grupa artikala!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
    }
}
